home *** CD-ROM | disk | FTP | other *** search
/ Network Supervisor's Toolkit / Network Supervisor's Toolkit.iso / novell / nw386 / odi-10.386 < prev    next >
Text File  |  1996-07-10  |  16KB  |  355 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11. Chapter 10
  12. Open Data-Link Interface
  13.  
  14.  
  15.  
  16. Open Data-Link Interface specifications allow media-
  17. independent and protocol-independent communications. 
  18. Because of this, the specifications, along with the
  19. Streams environment and NLMs, make NetWare 386 a true
  20. server platform on which you can build a customized
  21. system.  This section includes the following discussions:
  22.  
  23.    ■ Layers
  24.    ■ Packet Transmission
  25.    ■ Protocol ID Information
  26.  
  27.  
  28.  
  29. Layers
  30.  
  31. With the Open Data-Link specifications, NetWare 386
  32. supports a large number of LAN adapters, and can receive
  33. or send a variety of communication protocols on the same
  34. wire concurrently (i.e. IPX/SPX, TCP/IP, AppleTalk).  The
  35. implementation of Open Data-Link Interface specifications
  36. is perhaps best explained as several layers through which
  37. communications arriving at or departing from the server,
  38. bridge, or workstation must travel.  The layers, as shown
  39. in the following graphic, include the LAN adapter and
  40. MultiLink Interface Driver layer, the Link Support Layer,
  41. and the Protocol Stack layer.  From the protocol stack
  42. layer, communication packets can access the NetWare OS.
  43.                       ┌───────────────────────────────────────────────┐
  44.                       │                                               │
  45.                       │             NetWare 386 OS Services           │
  46.                       │                                               │
  47.                       └───────────────────────────────────────────────┘
  48.  
  49.                                    ┌────────┐    ┌────────┐           
  50.                                    │        │    │        │           
  51.                                    │NCP/IPX │    │ Apple  │           
  52.                                    │        │    │        │           
  53.                                    │Protocol│    │Protocol│           
  54.                                    │ Stack  │    │ Stack  │           
  55.                                    └────────┘    └────────┘           
  56.                                                                       
  57.                        ┌──────────────────────────────────────────────┐
  58.                        │                                              │
  59.                        │           Link Support Layer (LSL)           │
  60.                        │                                              │
  61.                        └──────────────────────────────────────────────┘
  62.                                                                        
  63.                        ┌─────────┐  ┌────────┐  ┌────────┐  ┌─────────┐
  64.                        │         │  │        │  │        │  │         │
  65.                        │EtherTalk│  │ NE2000 │  │ RX-Net │  │TokenRing│
  66.                        │         │  │        │  │        │  │         │
  67.                        │  MLID   │  │  MLID  │  │  MLID  │  │  MLID   │
  68.                        │         │  │        │  │        │  │         │
  69.                        └─────────┘  └────────┘  └────────┘  └─────────┘
  70.                                MultiLink Interface Drivers (MLID)
  71.                                    
  72.                           ┌──────┐     ┌─────┐     ┌─────┐     ┌──────┐
  73.                          ┌┴─────┐│    ┌┴────┐│    ┌┴────┐│    ┌┴─────┐│
  74.                         ┌┴─────┐├┘   ┌┴────┐├┘   ┌┴────┐├┘    │      ├┘
  75.                        ┌┴─────┐├┘   ┌┴────┐├┘   ┌┴────┐├┘     └──────┘
  76.                        │      ├┘    │     ├┘    │     ├┘    
  77.                        └──────┘     └─────┘     └─────┘
  78.                                       LAN Adapters
  79.  
  80. Packet Transmission
  81.  
  82. The role of Open Data-Link Interface specifications can
  83. be further illustrated through the process of packet
  84. transmission.  The following is an explanation of packet
  85. transmission on a network, first without Open Data-Link
  86. Interface specifications, and then with the
  87. specifications.
  88.  
  89. Without the Open Data-Link Interface specifications (on
  90. a NetWare 286 network), a workstation LAN adapter sends
  91. an IPX packet to another workstation where it is received
  92. by a LAN adapter.  The adapter's LAN driver passes the
  93. packet to the workstation's IPX, which either passes it
  94. to higher levels or routes it down through another LAN
  95. adapter to another network.  This process permits only
  96. one protocol packet per media at a time because the LAN
  97. adapter driver is written to identify and accept only a
  98. specific type of packet, whether an IPX packet, an
  99. AppleTalk packet, a TCP/IP packet, etc.
  100.  
  101. NetWare 386's implementation of Open Data-Link Interface
  102. specifications, however, supports a number of protocols
  103. on each media or LAN adapter.  On a NetWare 386 network,
  104. with Open Data-Link Interface specifications, a
  105. workstation LAN adapter sends any kind of packet (IPX,
  106. AppleTalk, TCP/IP, etc) to another workstation where it
  107. is received by a LAN adapter.  The LAN driver for that
  108. adapter, unlike the LAN driver for the 286 network, can
  109. accept any type packet.  Thus, it is called a MultiLink
  110. Interface Driver (MLID).  This MLID passes the packet to
  111. the next layer in the Open Data-Link Interface, the Link
  112. Support Layer (LSL).   
  113.  
  114. The Link Support Layer (LSL) is responsible for
  115. identifying the type of packet it receives and passing
  116. it to the appropriate protocol in the next higher layer. 
  117. This next higher layer is called the Protocol Stack
  118. layer, and it contains any number of protocol stacks such
  119. as IPX, AppleTalk, and TCP/IP.  Once a communication
  120. packet arrives at its specified protocol stack, it is
  121. either passed to higher levels or routed back down
  122. through the LSL to an MLID and to a specified LAN adapter
  123. which represents another network. MLID
  124. As the explanation on packet transmission points out, the
  125. NetWare 386 MLID is different from a NetWare 286 driver. 
  126. An MLID accepts multiple protocol packets rather than
  127. just one as 286 LAN drivers do.  When it receives a
  128. packet the MLID makes no effort to interpret it, but
  129. simply copies identification information from the packet
  130. into a receive ECB and passes the ECB to the LSL. 
  131. Likewise, when sending out a packet, the MLID simply
  132. copies identification information from a send ECB into
  133. the packet and sends it out.
  134. LSL
  135. The Link Support Layer (LSL) is a support and a link
  136. through which multiple protocol packets travel as they
  137. go from the LAN adapter with its accompanying MLID to a
  138. designated protocol stack.  The LSL acts as a type of
  139. switch board to route packets between LAN adapters with
  140. their MLIDs and Protocol Stacks.  As such, it must
  141. contain information about these two layers.  Thus, the
  142. LSL contains a data segment (OSData) which maintains LAN
  143. adapter information, Protocol Stack information, binding
  144. information, and ECB information.
  145.  
  146. The LSL assigns each LAN adapter a logical number and
  147. maintains information about each LAN adapter.  This
  148. information is registered with the LSL at load time.
  149.  
  150. It is also important to emphasize that the LSL never
  151. recognizes an MLID as an entity that controls one or more
  152. LAN adapters.  Instead, the LSL sees beneath it only LAN
  153. adapters, associating with each adapter a block of data,
  154. a send routine, and a control routine.  Although LAN
  155. adapters may have the same send and control routines
  156. (driven by the same driver), this does not matter to the
  157. LSL since each LAN adapter always has its own block of
  158. data.
  159.  
  160. The LSL also assigns each protocol stack a logical
  161. protocol stack number (up to 16 stacks are supported) and
  162. maintains information about each one.  As with the LAN
  163. adapter information, this protocol stack information is
  164. registered with the LSL at load time.
  165.  
  166. In addition to the information about the LAN adapters
  167. below it and the protocol stacks above it, the LSL needs
  168. information from the Event Control Blocks (ECBs) that
  169. come from either direction, depending on whether they are
  170. send or receive ECBs.  The LSL uses the packet ID
  171. information in the ECBs and the other information about
  172. LAN adapters below it and protocol stacks above it to
  173. route packets from LAN adapters to protocol stacks and
  174. from protocol stacks to LAN adapters. And finally, the LSL must also have a set of routines to
  175. support the drivers that are below and a set of routines
  176. for the protocol stacks above.  Using this information,
  177. the LSL is able to act as a switch board coordinating
  178. protocol stack/MLID interaction and packet movement
  179. within the server.  The Open Data-Link Interface
  180. architecture, including the information in the LSL is
  181. shown in the following graphic:
  182.  
  183.  
  184.                       ┌───────────────────────────────────────────────┐
  185.                       │                                               │
  186.                       │             NetWare 386 OS Services           │
  187.                       │                                               │
  188.                       └───────────────────────────────────────────────┘
  189.  
  190.                                    ┌────────┐    ┌────────┐           
  191.                                    │        │    │        │           
  192.                                    │NCP/IPX │    │ Apple  │           
  193.                                    │        │    │        │           
  194.                                    │Protocol│    │Protocol│           
  195.                                    │ Stack  │    │ Stack  │           
  196.                                    └────────┘    └────────┘           
  197.                                                                       
  198.                        ┌──────────────────────────────────────────────┐
  199.                        │ Send ECB Info           Protocol Stack Info  │
  200.                        │                         and Support Routines │
  201.                        │                                              │
  202.                        │                     LSL                      │
  203.                        │                                              │
  204.                        │                                              │
  205.                        │ LAN Adapter Info and                         │
  206.                        │ MLID Support Routines       Receive ECB Info │
  207.                        └──────────────────────────────────────────────┘
  208.  
  209.                                                      ..................
  210.                                                 ┌────────────────┐    .
  211.                                            ┌────┴───────────┐ 5  │    .
  212.                                       ┌────┴───────────┐ 4  │    │.....
  213.                                  ┌────┴───────────┐ 3  │    ├────┘
  214.                             ┌────┴───────────┐ 2  │    ├────┘
  215.                        ┌────┴───────────┐ 1  │    ├────┘
  216.                        │ LAN Adapter 0  │    ├────┘
  217.                        │                ├────┘
  218.                        └────────────────┘
  219.  
  220. Each network station (server, bridge, OS/2 workstation,
  221. DOS workstation) has its own implementation of an LSL. 
  222. Novell has created an LSL for the NetWare 386 server and
  223. the OS/2 workstation, and plans to create Link Support
  224. Layers for other workstation operating systems as well. 
  225. Currently, the NetWare 386 server LSL supports up to
  226. eight MLIDs and up to 16 protocol stacks. The following graphic illustrates two different types of
  227. communication packets entering a NetWare 386 server on
  228. an Ethernet adapter.
  229.  
  230.                       ┌───────────────────────────────────────────────┐
  231.                       │                                               │
  232.                       │             NetWare 386 OS Services           │
  233.                       │                                               │
  234.                       └───────────────────────────────────────────────┘
  235.  
  236.                                    ┌────────┐    ┌────────┐           
  237.                                    │        │    │        │           
  238.                                    │NCP/IPX │    │ Apple  │           
  239.                                    │        │    │        │           
  240.                                    │Protocol│    │Protocol│           
  241.                                    │ Stack  │    │ Stack  │           
  242.                                    └────────┘    └────────┘           
  243.                                                                       
  244.                        ┌──────────────────────────────────────────────┐
  245.                        │                                              │
  246.                        │                      LSL                     │
  247.                        │                                              │
  248.                        └──────────────────────────────────────────────┘
  249.                                                                        
  250.                        ┌─────────┐  ┌────────┐  ┌────────┐  ┌──────────┐
  251.                        │         │  │        │  │        │  │          │
  252.                        │EtherTalk│  │ NE2000 │  │ RX-NET │  │Token Ring│
  253.                        │         │  │        │  │        │  │          │
  254.                        │  MLID   │  │  MLID  │  │  MLID  │  │   MLID   │
  255.                        │         │  │        │  │        │  │          │
  256.                        └─────────┘  └────────┘  └────────┘  └──────────┘
  257.                           ┌──────┐     ┌─────┐     ┌─────┐     ┌──────┐
  258.                          ┌┴─────┐│    ┌┴────┐│    ┌┴────┐│    ┌┴─────┐│
  259.                         ┌┴─────┐├┘   ┌┴────┐├┘   ┌┴────┐├┘    │      ├┘
  260.                        ┌┴─────┐├┘   ┌┴────┐├┘   ┌┴────┐├┘     └──────┘
  261.              ┌─────────┤      ├┘    │     ├┘    │     ├┘    
  262.              │         └──────┘     └─────┘     └─────┘
  263.              │                        LAN Adapters
  264.              │
  265.              │    
  266.              │       ┌───┬───┬───┐        ┌───┬───┬───┐
  267.              │       │ 8 │   │ D │        │ 8 │ A │ D │
  268.              │       │ 1 │ I │ a │        │ 0 │ p │ a │
  269.              └───────┤ 3 │ P │ t ├────────┤ 9 │ p │ t ├────────┐
  270.                      │ 7 │ X │ a │        │ B │ l │ a │        │
  271.                      │ h │   │   │        │ h │ e │   │        │
  272.                      └───┴───┴───┘        └───┴───┴───┘        │
  273.                          Packet               Packet           │
  274.  
  275.  
  276. Protocol ID Information
  277.  
  278. Every packet on a network that supports multiple
  279. protocols is made up of the following components:
  280.  
  281.    ■ A communications protocol packet such as IPX,
  282.      TCP/IP, or Apple.
  283.  
  284.    ■ A media envelope
  285.  
  286.    ■ A globally administered value (1 to 6 bytes) called
  287.      a Protocol ID (PID), located inside the media
  288.      envelope.
  289.  
  290. As its name indicates, the PID that is located in every
  291. packet is a label that identifies two things about the
  292. packet:
  293.  
  294.    ■ The packet contains a certain communication protocol
  295.      header.
  296.  
  297.    ■ The packet contains a certain envelope frame.
  298.  
  299. As shown in the following graphic for example, an IPX
  300. header and an Ethernet II envelope have a PID of 8137h. 
  301. An AFP header and an Ethernet II envelope have a PID of
  302. FAh.  However, another protocol packet on another medium
  303. (for example, TCP/IP on ARCNET) might have the identical
  304. PID of 8137h or FAh.  PID values are not unique across
  305. all media.  The LSL uses the PID value to route incoming
  306. packets to the proper protocol stack.
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323. Although
  324. most packets contain a PID value that allows the LSL to
  325. route the packet to the correct destination protocol
  326. stack, some packets do not.  For example, networks
  327. sending packets with 802.3 envelope headers do not
  328. contain a PID field since those networks support only one
  329. type of communication protocol.  In these cases, MLIDs
  330. should be configured to stamp receive ECBs with a PID
  331. value instead of copying the value from the incoming
  332. packet.  The structure for the Protocol ID is shown
  333. below.
  334.  
  335.  
  336. ---------------------------------
  337.       Protocol ID Structure
  338.  
  339. ProtocolIDStructure  struc
  340.   Link               dd ?
  341.   MediaID            dw ?
  342.   ProtocolID         db 6 dup (?)
  343.   PSLogicalNumber    dd ?
  344. ProtocolIDStructure  ends
  345.  
  346. ---------------------------------
  347.  
  348.  
  349.  
  350.  
  351.  
  352.  
  353.  
  354.  
  355.